package com.c2b.algorithm.leetcode.base;

/**
 * <a href='https://leetcode.cn/problems/check-if-the-sentence-is-pangram/'>判断句子是否为全字母句(Check if the Sentence Is Pangram)</a>
 * <p>全字母句 指包含英语字母表中每个字母至少一次的句子。</p>
 * <p>给你一个仅由小写英文字母组成的字符串 sentence ，请你判断 sentence 是否为 全字母句 。</p>
 * <p>如果是，返回 true ；否则，返回 false 。</p>
 *
 * <p>
 * <b>示例：</b>
 * <pre>
 * 示例 1：
 *      输入：sentence = "thequickbrownfoxjumpsoverthelazydog"
 *      输出：true
 *      解释：sentence 包含英语字母表中每个字母至少一次。
 *
 * 示例 2：
 *      输入：sentence = "leetcode"
 *      输出：false
 * </pre>
 * </p>
 * <p>
 * <b>提示：</b>
 * <ul>
 *     <li>1 <= sentence.length <= 1000</li>
 *     <li>sentence 由小写英语字母组成</li>
 * </ul>
 * </p>
 *
 * @author c2b
 * @since 2024/1/18 15:22
 */
public class LC1832CheckIfTheSentenceIsPangram_S {

    static class Solution {
        /**
         * int 共32位，用低26位表示每一个字母是否出现过，1代表出现过，0代表，没出现过。
         * <p>
         * 例如："abcdefg"表示为：00000000 00000000 00000000 01111111。当低26位全为1时说明句子为全字母句。
         *
         * </p>
         */
        public boolean checkIfPangram(String sentence) {
            if (sentence.length() < 26) {
                return false;
            }
            int mask = 0;
            for (char ch : sentence.toCharArray()) {
                mask |= (1 << (ch - 'a'));
            }
            return mask == (1 << 26) - 1;
        }
    }
}
